package fr.neyb.wesb.core.job;

/**
 * running state of a job
 * 
 * @author adeconin
 * 
 */
public enum RunningState {
	/**
	 * state of a job that can not be run because its readers and writers are
	 * not set.<br/>
	 * from this state a job can move to {@link READY} when its readers and
	 * writers are initialized.
	 */
	NOT_INITIALIZED,
	/**
	 * state of a job that can be run.<br/>
	 * from this state a job can move to {@link WAITING} or {@link RUNNING} when
	 * it's been called to run depending on its ascending jobs are ended or not.<br/>
	 * it can move to {@link NOT_INITIALIZED} if a reader/writer is unset (set
	 * to null)
	 */
	READY,
	/**
	 * state of a job that has been called to run, but which is waiting for its
	 * ascending jobs to end.<br/>
	 * can move to {@link RUNNING} when all its ascending jobs are ended.
	 */
	WAITING,
	/**
	 * state of a job that is running/<br/>
	 */
	RUNNING,
	/**
	 * 
	 */
	PAUSED,
	/**
	 * 
	 */
	STOPPED,
	/**
	 * 
	 */
	ENDED;
}
